// 手机号验证
const phone = (rule, value, callback) => {
  const regFormat = /^[1][35678][0-9]{9}$/ // 正确手机号
  if (!value) {
    return callback(new Error('该项不能为空'))
  }
  if (!(regFormat.test(value))) {
    callback(new Error('请输入正确手机号'))
  }
}
// 数字验证 支持数字0
const number = (rule, value, callback) => {
  if (!value && value !== 0) {
    return callback(new Error('该项不能为空'))
  }
  if (!Number.isInteger(value)) {
    callback(new Error('请输入数字值'))
  }
}
// 输入框不能为空
const noEmpty = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('该项不能为空'))
  } else {
    callback()
  }
}
// QQ号码验证
const QQ = (rule, value, callback) => {
  if (value === '') {
    callback(new Error('输入QQ号'))
  } else if (/^[1-9][0-9]{4,10}$/.test(value)) {
    callback()
  } else {
    callback(new Error('输入正确的QQ号'))
  }
}
// 邮箱
const email = (rule, value, callback) => {
  const mal = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/
  if (!value) {
    return callback(new Error('该项不能为空'))
  }
  if (!(mal.test(value))) {
    callback(new Error('请输入正确邮箱'))
  } else {
    callback()
  }
}
// 多选框
const checkbox = (rule, value, callback) => {
  if (value.length < 1) {
    return callback(new Error('至少选择一项'))
  } else {
    callback()
  }
}
// 开始时间
const startTime = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('请选择开始日期'))
  } else {
    callback()
  }
}
// 结束时间
const endTime = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('请选择结束日期'))
  } else {
    callback()
  }
}
// 下拉框
const select = (rule, value, callback) => {
  if (value !== undefined && value !== null) {
    callback()
  } else {
    return callback(new Error('请选择一项'))
  }
}
// 身份证
function idNum(rule, value, callback) {
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  if (!value && value !== 0) {
    return callback(new Error('该项不能为空'))
  } else if (!reg.test(value)) {
    return callback(new Error('证件号码不正确'))
  } else {
    callback()
  }
}
export default {
  phone: [{ required: true, validator: phone, trigger: ['blur', 'change'] }], // 手机号
  interNum: [{ required: true, validator: number, trigger: ['blur', 'change'] }], // 整数
  noEmpty: [{ required: true, validator: noEmpty, trigger: ['blur', 'change'] }], // 不能为空
  QQ: [{ required: true, validator: QQ, trigger: ['blur', 'change'] }], // QQ
  email: [{ required: true, validator: email, trigger: ['blur', 'change'] }], // 邮箱
  checkbox: [{ required: true, validator: checkbox, trigger: ['blur', 'change'] }], // 多选
  startTime: [{ required: true, validator: startTime, trigger: ['blur', 'change'] }], // 开始时间
  endTime: [{ required: true, validator: endTime, trigger: ['blur', 'change'] }], // 结束时间
  select: [{ required: true, validator: select, trigger: ['blur', 'change'] }], // 下拉选择
  idNum: [{ required: true, validator: idNum, trigger: ['blur', 'change'] }] // 身份证号
}
